#include "MenvWindowShow.h"

QString MenvWindowShow::getInterfaceIP(const std::string &interfaceName) 
{
    // 遍历所有网络接口
    for (const QNetworkInterface &interface : QNetworkInterface::allInterfaces()) 
    {
        // 检查接口名称是否与给定的名称匹配
        if (interface.name().toStdString() == interfaceName) 
        {
            // 遍历该接口的所有IP地址
            for (const QNetworkAddressEntry &entry : interface.addressEntries()) 
            {
                // 检查IP地址的协议类型是否为IPv4
                if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) 
                {
                    // 返回IPv4地址字符串
                    return entry.ip().toString();
                }
                break; // 如果找到了指定的接口，就跳出循环
            }
        }
    }
    // 如果没有找到匹配的IPv4地址，返回空字符串
    return QString(); // 返回空字符串而不是创建新的对象
}



MenvWindowShow::MenvWindowShow(){
    // 设置窗口大小
    setFixedSize(640, 300);
    setWindowFlags(Qt::WindowStaysOnTopHint | Qt::ToolTip);//窗口置顶且设置为

    // 设置窗口在屏幕中间显示
    QDesktopWidget desktop; // 获取桌面信息
    QRect screenGeometry = desktop.screenGeometry(); // 获取屏幕尺寸
    int x = (screenGeometry.width() - this->width()) / 2;
    int y = (screenGeometry.height() - this->height()) / 2;
    this->move(x, y); // 移动窗口到屏幕中间

    // 创建按钮并设置文本
    QFont ft;
    ft.setPointSize(14);//字体大小

    title = new QLabel(tr("请选择具体操作:"),this);
    wan_ip = new QLabel(getInterfaceIP("eth1"),this);
    shutdownButton = new QPushButton("关机", this);
    rebootButton = new QPushButton("重启", this);
    settingsButton = new QPushButton("设置", this);
    cancelButton = new QPushButton("取消", this);
    settingsButton->setEnabled (false);

    //设置按键大小
    shutdownButton->setFixedSize(100,100);
    rebootButton->setFixedSize(100,100);
    settingsButton->setFixedSize(100,100);
    cancelButton->setFixedSize(100,100);

    // // 创建布局
    // QHBoxLayout* layout = new QHBoxLayout(this);
    // // 将按钮添加到布局中
    // layout->addWidget(shutdownButton);
    // layout->addWidget(rebootButton);
    // layout->addWidget(settingsButton);
    // layout->addWidget(cancelButton);
    // layout->setSpacing(10);// 设置按钮之间的间距为10像素

    // 创建一个垂直布局
    verticalLayout = new QVBoxLayout;

    // 创建一个水平布局用于按钮
    horizontalLayout = new QHBoxLayout;

    // 添加按钮到水平布局中
    horizontalLayout->addWidget(shutdownButton);
    horizontalLayout->addWidget(rebootButton);
    horizontalLayout->addWidget(settingsButton);
    horizontalLayout->addWidget(cancelButton);
    horizontalLayout->setContentsMargins(10, 10, 10, 10); // 左、上、右、下边距
    horizontalLayout->setSpacing(10);// 设置按钮之间的间距为10像素

    // 添加控件到垂直布局中
    verticalLayout->addWidget(title);
    verticalLayout->addLayout(horizontalLayout); // 添加水平布局
    verticalLayout->addWidget(wan_ip);

    // 设置窗口的布局
    setLayout(verticalLayout);

    //设置标题格式
    title->setFont(ft);
    title->resize(QSize(200, 50));
    wan_ip->setFont(ft);
    shutdownButton->setFont(ft);
    rebootButton->setFont(ft);
    settingsButton->setFont(ft);
    cancelButton->setFont(ft);

    

    // 连接信号和槽
    connect(shutdownButton, &QPushButton::clicked, this, &MenvWindowShow::onShutdownClicked);
    connect(rebootButton, &QPushButton::clicked, this, &MenvWindowShow::onRebootClicked);
    connect(settingsButton, &QPushButton::clicked, this, &MenvWindowShow::onSettingsClicked);
    connect(cancelButton, &QPushButton::clicked, this, &MenvWindowShow::onCancelClicked);
}
MenvWindowShow::~MenvWindowShow(){
    close();
}
void MenvWindowShow::onShutdownClicked() {
    // 弹出提示框询问是否确定关机
    QMessageBox::StandardButton reply;
    reply = QMessageBox::question(this, "关机确认", "确定要关机吗?", QMessageBox::Yes | QMessageBox::No);
    if (reply == QMessageBox::Yes) {
        // 执行关机操作
        // 注意：实际关机代码取决于操作系统，可能需要调用特定的API或命令
        system("poweroff");
    }
}

void MenvWindowShow::onRebootClicked() {
    // 执行重启操作
    // 注意：实际重启代码取决于操作系统，可能需要调用特定的API或命令
    system("reboot");
}

void MenvWindowShow::onSettingsClicked() {
    // 打开设置界面
    std::cout << ">>> 打开设置页面\r\n";
}

void MenvWindowShow::onCancelClicked() {
    // 返回到主界面，并关闭本页面
    close();
}



